﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace hm2_prime_factor
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入一个正整数 我将为你进行素数因子输出");
            string x = Console.ReadLine();
            int num = Convert.ToInt32(x);
            Console.WriteLine("该数的所有素数因子为：");
            for (int i = 1; i <= Math.Sqrt(num); i++)
            {
                if (num % i == 0)
                {
                    //1不是素数 也不是素数因子 
                    bool flag1 = i == 1 ? false : true;//不为1时 假设i是素数因子
                    bool flag2 = num / i == 1 ? false : true;//不为1时 假设num/i是素数因子
                    //判断i是不是素数因子
                    for (int j = 2; j <= Math.Sqrt(i); j++)
                    {
                        if (i % j == 0)
                        {
                            flag1 = false;
                            break;
                        }
                    }
                    //判断num/i是不是素数因子
                    for (int j = 2; j <= Math.Sqrt(num / i); j++)//1不是素数 也不是素数因子
                    {
                        if ((num / i) % j == 0)
                        {
                            flag2 = false;
                            break;
                        }
                    }
                    if (flag1) Console.Write("{0} ", i);
                    if (flag2 && num / i != i) Console.Write("{0} ", num / i);//如果num/i与i相同 不重复打印
                }
            }
            Console.WriteLine("");
        }
    }
}
